#include <iostream>
#include <vector>
using namespace std;

int findMinStep(int n)
{
    vector<int> v(2);
    v[0] = 0;
    v[1] = 1;
    while (v[v.size() - 1] < n)
    {
        int num = v[v.size() - 1] + v[v.size() - 2];
        v.push_back(num);
    }

    // for(int i = 0;i < v.size();i++)
    //     cout<<v[i]<<" ";
    // cout<<endl;

    // for(int i = 0;i < v.size();i++)
    //     cout<<v[i]<<" ";
    // cout<<endl;
    if (v[v.size() - 1] == n)
        return 2;
    else
        return v[v.size() - 1] - n > n - v[v.size() - 2] ? n - v[v.size() - 2] : v[v.size() - 1] - n;
}

int main()
{
    int n;
    cin >> n;
    int step = findMinStep(n);
    cout << step << endl;

    return 0;
}